<?php

class UsuarioWf extends Usuario { 
//<editor-fold defaultstate="collapsed" desc="Constantes">
  const NOMBRE_ENTIDAD_FIRMA = "UsuarioWfFirma";
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Campos">
  private $_empresas;
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Propiedades">
  public function getEmpresas() { return $this->_empresas; }
  public function setEmpresas($value) { $this->_empresas = $value; }

//</editor-fold>
  
//<editor-fold defaultstate="collapsed" desc="Metodos Publicos">
  /**
   * constructor
   * @author VSR, 01/01/2011
   */
  
  public function __construct() {
    parent::__construct();
    $this->_empresas = array();
  }
  
  public function obtenerPorId($id) {
    
    try {
      parent::obtenerPorId($id);
      
      $sp = "CALL spu_UsuarioWf_ObtenerPorId({id});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{id}", $id, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
      $totalRegistros = count($arr);

      //si se encontraron registros entonces se asignan
      if ($totalRegistros > 0) {
        $row = $arr[0];
        $this->_empresas = (is_null($row["Empresas"]) ) ? -1 : $row["Empresas"];
      } else {
        $this->_empresas = array();
      }
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  public static function obtenerPorAprobarPaso($idPaso) {
    
    try {
      
      $sp = "CALL spu_ListarAprobadorPorPaso({idPaso});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{idPaso}", $idPaso, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
      return $arr;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }
  
  /**
   * verifica si el usuario se puede loguear
   * @author JBC, 24/11/2011
   */
  public function loginWf(){
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_Usuario_LoginWf('{username}','{password}');";

      //reemplaza marcas por valores reales
      $sp = str_replace("{username}", $this->getUsername(), $sp);
      $sp = str_replace("{password}", $this->getPassword(), $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp, Bd::MULTI_QUERY);
      
      if(count($arr[0]) > 0){
        $oUsuarioWf = new UsuarioWf();
        $oUsuarioWf->setId($arr[0][0]["Id"]);
        $oUsuarioWf->setUsername($arr[0][0]["Username"]);
        $oUsuarioWf->setPassword($arr[0][0]["Password"]);
        $oUsuarioWf->setNombre($arr[0][0]["Nombre"]);
        $oUsuarioWf->setPaterno($arr[0][0]["Paterno"]);
        $oUsuarioWf->setMaterno($arr[0][0]["Materno"]);
        $oUsuarioWf->setEmail($arr[0][0]["Email"]);
        $oUsuarioWf->setTelefono($arr[0][0]["Telefono"]);
        $oUsuarioWf->setFechaHoraUltimoAcceso($arr[0][0]["FechaHoraUltimoAcceso"]);
        $oUsuarioWf->setIpUltimoAcceso($arr[0][0]["IpUltimoAcceso"]);
        $oUsuarioWf->setFechaHoraCreacion($arr[0][0]["FechaHoraCreacion"]);
        $oUsuarioWf->setFechaHoraModificacion($arr[0][0]["FechaHoraModificacion"]);
        $oUsuarioWf->setEsSuper($arr[0][0]["EsSuper"]);
        $oUsuarioWf->setActivo($arr[0][0]["Activo"]);
        $oUsuarioWf->setIdPerfil($arr[0][0]["IdPerfil"]);
        $oUsuarioWf->setPerfilNombre($arr[0][0]["Perfil"]);
        $oUsuarioWf->setEmpresas($arr[1]);
        return $oUsuarioWf;
      }else{
        return null;
      }
      
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }
  
  public function prueba(){
    
  }
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Compartidos">
  /**
   * obtiene listado de usuarios por empresa
   * @param <type> $idUsuario
   * @param <type> $filtroNombre
   * @param <type> $filtroUsername
   * @param <type> $idPerfil
   * @param <type> $idEmpresa
   * @return string
   * @author VSR, 01/01/2011
   */
  public static function obtenerListadoConFiltroPorEmpresa($idUsuario, $filtroNombre, $filtroUsername, $idPerfil, $idEmpresa) {
    $arr = null;
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_UsuarioWf_ObtenerListadoConFiltroPorEmpresa({idUsuario},'{filtroNombre}','{filtroUsername}',{idPerfil},{idEmpresa});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{idUsuario}", $idUsuario, $sp);
      $sp = str_replace("{filtroNombre}", $filtroNombre, $sp);
      $sp = str_replace("{filtroUsername}", $filtroUsername, $sp);
      $sp = str_replace("{idPerfil}", $idPerfil, $sp);
      $sp = str_replace("{idEmpresa}", $idEmpresa, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
    } catch (Exception $e) {
      $arr = null;
    }
    return $arr;
  }

//</editor-fold>



}
?>